﻿using System;
using MiniX.API.Data;

namespace MiniX.API.Filters
{
    /// <summary>
    /// 通用数据类操作
    /// </summary>
	public class DataFilter
	{
		public DataFilter()
		{

		}

        /// <summary>
        /// 获取配置信息表中的值
        /// </summary>
        /// <param name="context">数据库上下文</param>
        /// <param name="log">日志类</param>
        /// <param name="info_id">配置信息ID</param>
        /// <returns></returns>
        public static string? GetSettingInfoValue(MiniXApiContext context, Serilog.Core.Logger log, int info_id)
        {
            var result = "";
            try
            {
                var item = context.mini_setting_info.FirstOrDefault(t => t.setting_info_id == info_id);
                if (item != null)
                {
                    if (item.type_id == 1)
                    {
                        // 短内容
                        result = item.info_value;
                    }
                    else if (item.type_id == 2)
                    {
                        // 长内容
                        result = item.info_content;
                    }
                    else if (item.type_id == 3)
                    {
                        // 图片/文件
                        result = item.info_path;
                    }
                    else if (item.type_id == 4)
                    {
                        // 布尔值
                        result = item.is_open ? "1" : "0";
                    }
                    else if (item.type_id == 5)
                    {
                        // 链接
                        result = item.ext_link;
                    }
                    else if (item.type_id == 6)
                    {
                        // 代码
                        result = item.ext_desc;
                    }
                    else
                    {
                        result = item.info_value;
                    }
                }
            }
            catch (Exception ex)
            {
                log.Fatal(ex, " -> 获取配置信息表中的值");
            }

            return result;
        }

    }
}

